home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 3
/
Gekikoh Dennoh Club Vol. 3 (Japan).7z
/
Gekikoh Dennoh Club Vol. 3 (Japan) (Track 1).bin
/
fsw3
/
make
/
function.doc
< prev
next >
Wrap
Text File
|
1990-02-17
|
7KB
|
197 lines
GNUmakeではMakefile中で関数が使えます。関数呼び出しの書式は
$(function arguments)
または
${function arguments}
です。functionは関数名、argumentsはその引数です。引数は関数名と1つ以上の
空白、あるいはタブによって区切られます。2つ以上の引数がある場合はカンマ
(,)で区切って並べます。引数中に空白やスペースを入れたい場合は、変数を使い
ます。
例:
comma:= ,
space:= $(empty) $(empty)
foo:= a b c
bar:= $(subst $(space),$(comma),$(foo))
ここで、barは`a,b,c'となります。
GNUmakeでは以下の関数が使用できます。
文字列処理関数
$(subst from,to,text)
text中に出現するfromをtoで置換します。
$(subst ee,EE,feet on the street)
は`fEEt on the strEEt'になります。
$(patsubst pattern,replace,text)
text中のpatternにマッチする空白で区切られた語をreplaceで
置き換えます。patternには1つの`%'を含むことができます。
`%'はワイルドカードの`*'と同じような働きをします。
$(patsubst %.c,%.o,x.c.c bar.c)
は`x.c.o bar.o'になります。
$(strip string)
stringに前後する空白を取り除き、String中に出現する2つ以
上の空白を1つの空白に置き換えます。
$(strip a b c )
は`a b c'になります。
$(findstring find,in)
in中にfindが出現すればfindを返し、そうでなければ空文字を
返します。
$(findstring a,abc)
は`a`に
$(findstring a,bcd)
は`'になります。
$(filter pattern,text)
空白で区切られたtext中の語で、patternにマッチしないものを
取り除きます。
source:= foo.c bar.c ugh.h
$(filter %.c,$(source))
は`foo.c bar.c'になります。
$(filter-out pattern,text)
$(filter)とは逆に、patternにマッチするものをtextから除き
ます。
source:= foo.c bar.c ugh.h
$(filter-out %.c,$(source))
は`ugh.h'になります。
$(sort list)
空白で区切られたlistの語をソートします。重複する語は取り
除かれます。
$(sort foo lose bar lose)
は`bar foo lose'になります。
ファイル名処理関数
$(dir names)
ファイル名namesのディレクトリ部分を取り出します。
$(dir src\foo.c hacks)
は`src\ .\'となります。
$(notdir names)
ファイル名namesからディレクトリ部分を取り除いたものを返し
ます。
$(notdir src\foo.c hacks)
は`foo.c hacks'になります。
$(suffix names)
ファイル名namesからサフィックスを取り出します。サフィック
スは最後のピリオドから後ろの部分です。ピリオドのない名前
については空文字を返します。
$(suffix src/foo.c hacks)
は`.c'になります。
$(basename names)
ファイル名namesからサフィックスを取り除いた部分を返します。
$(basename src/foo.c hacks)
は`src/foo hacks'になります。
$(addsuffix suffix,names)
引数namesにサフィックスsuffixをつけます。
$(addsuffix .c,foo bar)
は`foo.c bar.c'になります。
$(addprefix prefix,names)
引数namesにプレフィックスをつけます。
$(addprefix \lib\,clib.a gnulib.a)
は`\lib\clib,a \lib\gnulib.a'になります。
$(join list1,list2)
list1とlist2の語を連結します。list1のn番目の語はlist2のn
番目の語と連結されます。どちらかのリストが長い場合、余分
な要素はそのまま結果にコピーされます。
$(join a b,.c .c)
は`a.c b.o'となります。
$(word n,text)
text中のn番目の語を返します。
$(word 2,foo bar baz)
は`bar'となります。
$(words text)
text中の語の数を返します。
$(words foo bar baz)
は`3'になります。
$(firstword text)
text中の最初の語を返します。$(word 1,text)と同じことです。
$(firstword foo bar baz)
は`foo'になります。
$(wildcard pattern)
patternのワイルドカード展開をします。ワイルドカードはUNI
Xのshと同様のもので、`*'、`?'、`[...]'が使えます。ディレ
クトリにfoo.c bar.c bar.h baz.c afo.cがある場合、
$(wildcard [a-b]*.c)
は`afo.c bar.c baz.c'になります。
foreach関数
$(foreach var,list,text)
変数varにlistの値を次々代入してtextを実行します。
dirs:= foo bar
$(foreach dir,$(dirs),$(wildcard $(dir)/*.c))
はディレクトリfoo、bar中の.cを拡張子に持つファイルのリス
トを返します。
foreach関数実行後の変数varの値は、foreach実行前と変わりま
せん。
orign関数
$(orign variable)
変数variableがどこで定義されたものであるかを返します。返
される値とその意味は以下のとおりです。
`undefined'
variableは未定儀である
`default'
variableはデフォルトで定義された
`environment'
variableは環境変数から受け継がれたものであり、オ
プション`-e'は指定されていない
`environment override'
variableは環境変数から受け継がれたものであり、オ
プション`-e'が指定されている
`file'
variableはmakefile中で定義された
`command line'
variableはコマンドラインで定義された
`override'
variableはmakefile中でoverride指令により定義され
た
`automatic'
variableはコマンド実行時に規則にしたがって自動的
に定義された
shell関数
$(shell command)
commandをコマンドシェル(Human68kではcommand.x)に渡し、出
力結果の改行をブランクに置換する。